package com.itheima.controller;


import com.itheima.domain.Book;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;


//所有人必须掌握：

//@ResponseBody 和 @RequestBody
//@ResponseBody 处理响应数据 加了这个注解，就返回的是数据  不是页面
//@RequestBody  处理请求数据 使用这个注解可以把请求的Json转为对象


// java代码：value = "test1/{age}"
// 请求地址：http://localhost/test1/123?name=zhangsan
// @RequestParam 和  @PathVariable
// @RequestParam：获取请求参数，在上例中，可以获取name=zhangsan
// @PathVariable：获取请求地址上的值  在上例中，可以获取  age  为 123


// @RequestMapping：进行请求映射的
// value属性：映射请求url地址
// method属性：映射请求方法的
// 其他属性不常用，做好笔记即可

@Controller
@RequestMapping("demo")  //请求url必须以demo
public class DemoController {

    //POST http://localhost/demo/test1?name=zhangsan&age=11
    //     请求体:   {"name":"java编程思想","price":40.00}
    // @RequestBody:把请求的Json数据转为对象
    // value = "test1"//请求url必须以demo/test1
    @RequestMapping(value = "test1", method = RequestMethod.POST)
    @ResponseBody//不走视图解析器(不反悔页面)，返回的是数据  ：ok
    public String test1(String name, @RequestParam("age") Integer abc, @RequestBody Book book) {
        //.....


        return "ok";
    }


    @RequestMapping(value = "test2/{price}", method = RequestMethod.POST)
    @ResponseBody//不走视图解析器(不反悔页面)，返回的是数据  ：book对象的Json格式数据
    public Book test2(String name, @PathVariable double price) {
        //.....

        return new Book();
    }


    // 完整的请求路径：http://localhost/demo/test5/123/lisi?name=zhangsan
    // http://localhost: 固定写法，根据服务器实际的ip地址
    // /demo：在DemoController类上进行声明的@RequestMapping("demo")
    // test5/123:处理器(Controller的方法)上声明的路径
    //  123 对应的是 value = "test5/{price}"  中的  {price}
    @RequestMapping(value = "test5/{price}/{a}", method = RequestMethod.POST)
    @ResponseBody//不走视图解析器(不反悔页面)，返回的是数据  ：book对象的Json格式数据
    public Book test5(@RequestParam("name") String n, @PathVariable("price") double p
            , @PathVariable("a") String aname) {
        //.....
        // n = zhangsan
        // p = 123
        // aname = lisi
        return new Book();
    }

}
